package com.softer.chengxin.person.service;

import com.softer.chengxin.common.domin.CommonResult;
import com.softer.chengxin.common.domin.ManagerPageResult;
import com.softer.chengxin.common.domin.Page;
import com.softer.chengxin.person.domin.Person;

import java.util.List;

/**
 * @author Gong Zhiyang
 * @date 2018/9/26
 */
public interface PersonService {
    /**
     * 查询企业主要人员
     *
     * @param id   企业ID
     * @param duty 职务
     * @return 人员信息
     */
    Person queryMainPersonnel(Integer id, String duty);

    /**
     * 物业人员信息添加
     *
     * @param person 人员实体
     * @return 结果集
     */
    CommonResult addPerson(Person person);

    /**
     * 物业人员信息编辑
     *
     * @param person 人员实体
     * @return 处理结果
     */
    CommonResult updatePerson(Person person);

    /**
     * 分页查询企业人员列表
     *
     * @param page         页面信息
     * @param id           企业ID
     * @param name         人员名字
     * @param departmentId 部门ID
     * @return 人员列表
     */
    ManagerPageResult queryPersonList(Page page, Integer id, String name, Integer departmentId);

    /**
     * 根据人员Id查询人员详情
     *
     * @param id 人员Id
     * @return 人员详情
     */
    Person queryPersonById(Integer id);

    /**
     * 刪除人员（将人员状态设为离职,离职状态设置为10）
     *
     * @param id   人员Id
     * @param type 删除类型（0离职，1从项目中删除）
     * @return 处理结果
     */
    CommonResult delete(Integer id, Integer type);

    /**
     * 查询企业所有人员，用于下拉列表
     *
     * @param name 姓名，用于模糊查询
     * @param id   企业ID
     * @return 人员列表
     */
    List<Person> queryAllPerson(String name, Integer id);

    /**
     * 查询项目人员列表
     *
     * @param projectId 项目Id
     * @param page      页面实体
     * @param person    查询实体
     * @return 人员列表
     */
    ManagerPageResult queryProjectPersonList(Page page, String projectId, Person person);

    /**
     * 增加项目人员
     *
     * @param person    人员实体
     * @param projectId 项目ID（前端创建的ID）
     * @return 添加结果
     */
    CommonResult addProjectPerson(Person person, String projectId);

    /**
     * 删除从业人员
     *
     * @param id 人员ID
     * @return 处理结果
     */
    CommonResult deletePerson(Integer id);
    /**
     * 人员调动
     *
     * @param id        人员ID
     * @param projectId 项目ID
     * @return 调动结果
     */
    CommonResult mobilize(Integer id, Integer projectId);
}
